package com.itwlj.service;

import com.itwlj.dto.PasswordUpdateDTO;
import com.itwlj.dto.UserDTO;
import com.itwlj.dto.UserLoginDTO;
import com.itwlj.dto.UserPageQueryDTO;
import com.itwlj.entity.User;
import com.itwlj.result.PageResult;
import com.itwlj.vo.UserLoginVO;

import java.math.BigDecimal;

public interface UserService {
    /**
     * 登录
     *
     * @param userLoginDTO
     * @return
     */
    UserLoginVO login(UserLoginDTO userLoginDTO);

    /**
     * 新增用户
     *
     * @param userDTO
     */
    void insert(UserDTO userDTO);

    /**
     * 用户分页查询
     *
     * @param userPageQueryDTO
     * @return
     */
    PageResult page(UserPageQueryDTO userPageQueryDTO);

    /**
     * 根据id修改用户
     *
     * @param userDTO
     */
    void update(UserDTO userDTO);

    /**
     * 用户启用禁用
     *
     * @param status
     * @param id
     */
    void startOrStop(Integer status, Long id);

    /**
     * 修改密码
     *
     * @param passwordUpdateDTO
     */
    void updatePassword(PasswordUpdateDTO passwordUpdateDTO);

    /**
     * 创建账号
     *
     * @param userDTO
     */
    void createAccount(UserDTO userDTO);

    /**
     * 根据用户名和手机号查询用户
     *
     * @param account
     * @param phone
     * @return
     */
    void getByAccountAndPhone(String account, String phone);

    /**
     * 重置密码
     *
     * @param passwordUpdateDTO
     */
    void resetPassword(PasswordUpdateDTO passwordUpdateDTO);

    /**
     * 根据id查询用户
     *
     * @param id
     * @return
     */
    User getById(Long id);

    /**
     * 扣减余额
     *
     * @param id
     * @param balance
     */
    void deductBalance(Long id, BigDecimal balance);
}
